/**
 * 多建一个部门表的好处在于查询的时候可以进行关联查询，只需要查询数据库一次，不需要进行很多次查询
 * 比如：找到所有部门的所有用户，并按部门分好类
 * 所以，即使部门可以写死，不需要增删改查，多一个这样的表也是很有必要的
 */
module.exports = (db, DataTypes) => {
  return db.define('Department', {
    name: DataTypes.STRING,
    description: DataTypes.STRING,
    createdAt: DataTypes.DATE,
    updatedAt: DataTypes.DATE,
  }, {
    hooks: {
      /**
       * 添加用户时就绑定BrowsePrivileges
       */
      async afterCreate(department) {
        const BrowsePrivileges = db.models.BrowsePrivileges;
        await BrowsePrivileges.create({  // 分组默认有首页和设置权限
          dashboardView: true,
          settingsView: true,
          DepartmentId: department.id,
        });
      }
    },
    associate(models) {
      models.Department.hasMany(models.User);
      models.Department.hasOne(models.BrowsePrivileges);
    }
  });
};
